package isdproject.client;

import java.util.ArrayList;
import java.util.List;

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
/**
 * 
 * @author User
 * @version 1.0
 * een klasse bedoeld om alle opslag methoden te bundelen, bedoeld om overzicht te houden
 * deze klasse wordt geinstantieerd en meegegeven aan de UI's
 *
 */
public class OpslagServiceDelegate
{
	private VakServiceAsync vakService = GWT.create(VakService.class);
	private KlasServiceAsync klasService = GWT.create(KlasService.class);
	private LesServiceAsync lesService = GWT.create(LesService.class);
	///array van klassen opslaan
	///meteen al instantieren
	private ArrayList<Klas> klassen = new ArrayList<Klas>();
	
	void addVak(final Vak vak)
	{
		vakService.addVak(vak, new AsyncCallback<Void> () {
			public void onFailure(Throwable caught) 
			{
				System.out.println("opslagservicedelegate addVak onfailure");
			}
			public void onSuccess(Void result) 
			{
				System.out.println("opslagservicedelegate addVak onsuccess");
			}
		});        
	}
	
	void addKlas (final Klas klas )
	{
		klasService.addKlas (klas, new AsyncCallback<Void> () {
			public void onFailure(Throwable caught) 
			{
				System.out.println("opslagservicedelegate addKlas onfailure");
			}
			public void onSuccess(Void result) 
			{
				System.out.println("opslagservicedelegate addKlas onsuccess");
			}
		});        
	}
	
	void listKlassen()
	{
		klasService.listKlassen(new AsyncCallback<List<Klas>>(){

			public void onFailure(Throwable caught)
			{
				System.out.println("opslagservicedelegate listKlassen onfailure");
			}
			public void onSuccess(List<Klas> result)
			{
				setKlassen((ArrayList<Klas>)result);///extra cast				
			}});
	}
	
	void addLes(final Les les)
	{
		lesService.addLes(les, new AsyncCallback<Void> () {
			public void onFailure(Throwable caught) 
			{
				System.out.println("opslagservicedelegate addLes onfailure");
			}
			public void onSuccess(Void result) 
			{
				System.out.println("opslagservicedelegate addLes onsuccess");
			}
		});        
	}

	public void setKlassen(ArrayList<Klas> klassen)
	{
		this.klassen = klassen;
	}

	public ArrayList<Klas> getKlassen()
	{
		return klassen;
	}
}
